/*
    BEEM is a videoconference application on the Android Platform.

    Copyright (C) 2009 by Frederic-Charles Barthelery,
                          Jean-Manuel Da Silva,
                          Nikita Kozlov,
                          Philippe Lago,
                          Jean Baptiste Vergely,
                          Vincent Veronis.

    This file is part of BEEM.

    BEEM is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    BEEM is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.

    Please send bug reports with examples or suggestions to
    contact@beem-project.com or http://dev.beem-project.com/

    Epitech, hereby disclaims all copyright interest in the program "Beem"
    written by Frederic-Charles Barthelery,
               Jean-Manuel Da Silva,
               Nikita Kozlov,
               Philippe Lago,
               Jean Baptiste Vergely,
               Vincent Veronis.

    Nicolas Sadirac, November 26, 2009
    President of Epitech.

    Flavien Astraud, November 26, 2009
    Head of the EIP Laboratory.

 */
package com.beem.project.beem.utils;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.ConnectivityManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

import com.awan.utils.netStatus;
import com.beem.project.beem.BeemApplication;
import com.beem.project.beem.BeemService;
import com.beem.project.beem.R;
import com.beem.project.beem.service.LoginAsyncTask;
import com.beem.project.beem.service.aidl.IXmppFacade;
import com.beem.project.beem.ui.Chat;
import com.beem.project.beem.ui.ContactList;
import com.beem.project.beem.ui.Login;
import com.beem.project.beem.ui.LoginAnim;
import com.conte.services.global;

/**
 * Manage broadcast disconnect intent.
 * 
 * @author nikita
 */
public class BeemBroadcastReceiver extends BroadcastReceiver {

	/** Broadcast intent type. */
	public static final String BEEM_CONNECTION_CLOSED = "BeemConnectionClosed";

	private static final Intent SERVICE_INTENT = new Intent();
    static {
    	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
    }
	/**
	 * constructor.
	 */
	public BeemBroadcastReceiver() {
	}

	private Activity act;
	private static Context ctx;
	private static final int LOGIN_REQUEST_CODE = 1;
	private boolean off=false;
	private BeemApplication session;
	private String currPage;
	
	/**
	 * {@inheritDoc}
	 */
	@Override
	public void onReceive(final Context context, final Intent intent) {
		try{
			session=((BeemApplication) context.getApplicationContext());
			currPage=session.getPage();
			Log.e(getClass().getName(),"appliction page = "+currPage);
		}catch(Exception e){
			Log.e(getClass().getName(),"appliction is not instatiate");
		}
		
		String intentAction = intent.getAction();
		Log.e(getClass().getName(), "onReceive = " + intentAction);
		
		if (intentAction.equals(BEEM_CONNECTION_CLOSED)) {
			CharSequence message = intent.getCharSequenceExtra("message");
			Toast.makeText(context, message, Toast.LENGTH_LONG).show();
			/*if (context instanceof Activity) {
				ctx = context;
				act = (Activity) context;
				act.finish();
				// The service will be unbinded in the destroy of the activity.
			}*/
		} else if (intentAction.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
			Log.e(getClass().getName(), "onReceive = " + intentAction + "=="
					+ ConnectivityManager.CONNECTIVITY_ACTION);

			if (intent.getBooleanExtra(
					ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
				off=true;
				Log.e(getClass().getName(),
						"onReceive = disco by system network off="+off);

				Toast.makeText(
						context,
						context.getString(R.string.BeemBroadcastReceiverDisconnect),
						Toast.LENGTH_SHORT).show();
				//context.stopService(new Intent(context, BeemService.class));

				
			}
			if (netStatus.isConnectedFast(context)) {
				if(off==true){
					Log.e(getClass().getName(),
					"onReceive = reconnect by system network page = "+currPage);
					Bundle clipBundle = new Bundle();
					clipBundle.putBoolean("is_minimize", true);
			
					
					
			    	
			    	if(currPage.equals("off")){
						Intent i = new Intent(context, LoginAnim.class);
						i.putExtra("login_data", clipBundle);
						i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
						context.startActivity(i);
						
						context.stopService(SERVICE_INTENT);
				    	System.exit(0);
			    	}else{
			    		context.stopService(SERVICE_INTENT);
				    	System.exit(0);
			    	}
			    	
					//off=false;
					
						//if(currPage.equals("ContactList"))
							//ContactList.refresh();
						//if(currPage.equals("Chat"))
							//Chat.refresh();
					
				}else{
					Log.e(getClass().getName(),
					"onReceive = already login no need to relogin!");
				}
			}
			
		}

	}
}
